#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;

const int MAXN = 9999;
const int DLEN = 4;
const int DIGIT = 500;

class BigNum {
public:
    BigNum() : len(1) { memset(a, 0, sizeof(a)); }
    BigNum(int );
    BigNum(const char []);
    BigNum(const BigNum &);
    BigNum &operator=(const BigNum &);
    BigNum operator*(const BigNum &) const;
    BigNum operator/(const int) const;
    friend ostream & operator<<(ostream &os, const BigNum &n);
    friend istream & operator>>(istream &is, const BigNum &n);
private:
    int a[DIGIT];
    int len;
};
BigNum::BigNum(int n)
{
    len = 0;
    memset(a, 0, sizeof(a));
    while (n) {
        a[len++] = n % (1 + MAXN);
        n /= (1 + MAXN);
    }
    if (len == 0) len = 1;
}
BigNum::BigNum(const char s[])
{
    int j, m, n;
    
    len = 0;
    memset(a, 0, sizeof(a));
    for (n = strlen(s) - 1; n >= 0; n -= 4) {
        m = 0;
        if ((j = n - 3) < 0) j = 0;
        while (j <= n) m = m * 10 + s[j++] - '0';
        a[len++] = m;
    }
}
BigNum::BigNum(const BigNum &n)
{
    *this = n;
}
BigNum &BigNum::operator=(const BigNum &n)
{
    int i;
    
    len = n.len;
    memset(a, 0, sizeof(a));
    for (i = 0; i < len; i++) a[i] = n.a[i];
    return *this;
}
BigNum BigNum::operator*(const BigNum &n) const
{
    BigNum t;
    int   i, j, blen;
    
    for (i = 0; i < len; i++) {
        for (j = 0; j < n.len; j++) {
              t.a[i + j] += a[i] * n.a[j];
              if (t.a[i + j] > MAXN) {
                  t.a[i + j + 1] += t.a[i + j] / (MAXN + 1);
                  t.a[i + j] %= (MAXN + 1);
              }
        }
    }
    t.len = len + n.len;
    while (t.a[t.len - 1] == 0 && t.len > 1) t.len--;
    return t;
}
BigNum BigNum::operator/(const int n) const
{
    BigNum t;
    int   i, down;
    
    down = 0;
    for (i = len - 1; i >= 0; i--) {
        t.a[i] = (down * (MAXN + 1) + a[i]) / n;
        down = a[i] + down*(MAXN + 1) - t.a[i]*n;
    }
    t.len = len;
    while (t.a[t.len - 1] == 0 && t.len > 1) t.len--;
    return t;
}
ostream & operator<<(ostream &os, const BigNum &n)
{
    int i;
    
    os << n.a[n.len - 1];
    for(i = n.len - 2 ; i >= 0 ; i--){
        os.width(DLEN);
        os.fill('0');
        os << n.a[i];
    }
    return os;
}
istream & operator>>(istream &is, BigNum &n)
{
    char   s[DIGIT * 4 + 1];
    
    is >> s;
    BigNum t(s);
    n = t;
    return is;
}

int main( )
{
    int n, i;
    while ( scanf("%d", &n) != EOF )
    {
        BigNum s = 1;
        for ( i = 1; i <= 2 * n; i++ )
            s = s * i;
        s = s / ( n + 1 );
        for ( i = 1; i <= n; i++ )
            s = s / i / i;
        cout << s << endl;
    }
    return 0;
}
